package com.ruoyi.exam.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.exam.domain.ExamBankQuestion;
import com.ruoyi.exam.vo.ExamBankQuestionVo;
import com.ruoyi.exam.vo.ExamQuestionWithSortVo;

import java.util.List;

/**
 * 题库题目关联Service接口
 *
 * @author Tellsea
 * @date 2025-05-30
 */
public interface IExamBankQuestionService extends IService<ExamBankQuestion> {

    /**
     * 分页查询
     *
     * @param entity
     * @return
     */
    TableDataInfo<ExamBankQuestionVo> queryList(ExamBankQuestionVo entity);

    /**
     * 查询全部
     *
     * @param entity
     * @return
     */
    List<ExamBankQuestionVo> queryAll(ExamBankQuestionVo entity);

    /**
     * 根据ID查询
     *
     * @param id
     * @return
     */
    ExamBankQuestionVo queryById(Long id);

    /**
     * 获取指定题库的所有题目，按顺序排列
     */
    List<ExamQuestionWithSortVo> getQuestionsByBankId(Long userId,Long bankId);

    /**
     * 获取指定题库的题目ID列表，按顺序排列
     */
    List<Long> getQuestionIdsByBankId(Long bankId);

    /**
     * 根据题库ID和排序号获取题目
     */
    ExamQuestionWithSortVo getQuestionBySortOrder(Long bankId, Long sortOrder);

    /**
     * 获取下一题
     */
    ExamQuestionWithSortVo getNextQuestion(Long bankId, Long currentSortOrder);

    /**
     * 获取题库的第一题
     */
    ExamQuestionWithSortVo getFirstQuestion(Long bankId);

    /**
     * 重新排序题库中的题目
     */
    void reorderQuestions(Long bankId, List<Long> questionIds);
}
